#include <string>
#include <iostream>
using namespace std;
int main()
{
    // static_cast
    // 是比较安全的一种转换。所谓安全，就是指这个转换导致的行为都能保证合乎预期：比如整型和浮点类型间的转换保证了其值尽可能不变
    int a{42};
    float x{1.0f}, y{2.0f};
    cout << static_cast<double>(a) << endl;
    cout << static_cast<int>(x + y) << endl;
    cout << static_cast<float>(5 / 3) << endl;
    return 0;
    // static_cast 容许如下转换
    // 1、各种隐式转换（主要包括算术类型间转换和自定义类型转换，还有添加指针只读性（即 T* 到 const T*）的转换、到 void* 的转换等）;
    // 2、显式（explicit）的自定义类型转换；
    // 3、枚举类型和整数类型之间的转换；
    // 4、派生类指针到基类指针的转换（“向上转型”）；
    // 5、基类指针到派生类指针的转换（“向下转型”）
}